package com.yunxi.otd.service;

import com.github.pagehelper.PageInfo;
import com.yunxi.core.web.ApiResult;
import com.yunxi.core.web.LoginInfo;
import com.yunxi.otd.pojo.*;

/**
 * <p>
 * 周度需求计划 服务类
 * </p>
 *
 * @author XUQI
 * @since 2019-05-09
 */
public interface OtdWeekPlanDubboService {
    /**
     * 分页查询周计划上传主表
     *
     * @param otdWeekUploadVO VO
     * @param pageNum         页数
     * @param pageSize        行数
     * @return PageInfo
     */
    //PageInfo page(OtdWeekUploadVO otdWeekUploadVO, Integer pageNum, Integer pageSize);

    /**
     * 分页查询周计划
     *
     * @param weekPlanVO weekPlanVO
     * @param pageNum 页数
     * @param pageSize 行数
     */
    PageInfo page(OtdWeekPlanVO weekPlanVO, Integer pageNum, Integer pageSize);

    /**
     * 导入：新增周度需求计划
     *
     * @param detailVOList VOList
     */
    ApiResult importWeekPlan(OtdWeekImportVO detailVOList);

    /**
     * 根据上传记录CODE查询周计划List
     *
     * @param weekUploadCode 上传主表CODE
     * @return 周计划集合
     */
    OtdWeekPlanVO findWeekPlanVoListByCode(String weekUploadCode);

    /**
     * 修改生产计划单车
     *
     * @param planVO 生产计划
     */
    ApiResult modifyPlan(OtdWeekPlanSingleVO planVO, LoginInfo info);

    /**
     * 删除周单车
     *
     * @param singleId 周单车ID
     */
    ApiResult removeSingle(String singleId, LoginInfo info);

    /**
     * 新增单车生产计划
     */
    ApiResult addSingle(OtdWeekPlanSingleVO planVO, LoginInfo info);

    /**
     * 修改周计划明细
     *
     * @param detailVO 周计划明细VO
     */
    ApiResult modifyDetail(OtdWeekPlanDetailVO detailVO, LoginInfo info);

    /**
     * 删除周计划明细
     *
     * @param detailId 周计划明细
     */
    ApiResult removeDetail(String detailId, LoginInfo info);

    /**
     * 新增周需求明细
     *
     * @param detailVO 周计划明细
     */
    ApiResult addDetail(OtdWeekPlanDetailVO detailVO, LoginInfo info);

    /**
     * 销售释放周销售预测
     *
     * @param weekPlanId 周计划ID
     */
    ApiResult releaseWeek(String weekPlanId);

//    /**
//     * 生产驳回W1周计划
//     *
//     * @param otdWeekUploadVO 周计划上传主表VO
//     */
//    ApiResult rejectW1Plan(OtdWeekUploadVO otdWeekUploadVO, LoginInfo info);

    /**
     * 修改周计划
     *
     * @param weekPlanVO 周计划VO
     */
    //void modifyWeekPlan(OtdWeekPlanVO weekPlanVO) throws Exception;
    /**
     * 周计划分日查询
     *
     * @param weekUploadCode 上传主表CODE
     * @return 分日集合
     */
//    List<Map<String, Object>> findWeekPlanDaily(String weekUploadCode);
    /**
     * 根据周计划编号查询周计划明细
     *
     * @param weekPlanCode 周计划编号
     * @return List<OtdWeekPlanDetailVO>
     */
//    List<OtdWeekPlanDetailVO> findDetailList(String weekPlanCode);
    /**
     * 根据周计划编号查询周计划单车
     *
     * @param weekPlanCode 周计划编号
     * @return List<OtdWeekPlanSingleVO>
     */
//    List<OtdWeekPlanSingleVO> findSingleList(String weekPlanCode);
}
